package cn.fuxi2022.model.empty.applets;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 社员联系表（供学生添加微信和群聊）
 * </p>
 *
 * @author fuxi
 * @since 2022-10-10 12:56:19
 */
@Getter
@Setter
@TableName("group_contact")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class GroupContact implements Serializable {

    private static final long serialVersionUID = 1L;

    @NotNull(message = "ID不能为空", groups = Update.class)
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;

    /**
     * 名称
     */
    @NotNull(message = "标题不能为空", groups = {Save.class, Update.class})
    @TableField("title")
    private String title;

    /**
     * 二维码链接（手机号）
     */
    @NotNull(message = "链接或手机号不能为空", groups = {Save.class, Update.class})
    @TableField("url")
    private String url;

    /**
     * 联系类型（1微信群聊二维码图片 2微信个人二维码图片 3手机号 4微信公众号二维码图片 0其他）
     */
    @Range(min = 0, max = 4, message = "联系类型错误",groups = {Save.class, Update.class})
    @TableField("type")
    private Integer type;

    /**
     * 描述
     */
    @TableField("description")
    private String description;

    /**
     * 是否禁用 1（true）已禁用，  0（false）未禁用
     */
    @Range(min = 0, max = 1, message = "禁用类型错误",groups = {Save.class, Update.class})
    @TableField("status")
    private Integer status;

    /**
     * 逻辑删除 1（true）已删除， 0（false）未删除
     */
    @JsonIgnore
    @TableLogic(value = "0", delval = "1")
    @TableField("is_deleted")
    private Integer isDeleted;

    /**
     * 创建时间
     */
    @JsonIgnore
    @TableField(value = "gmt_create", fill = FieldFill.INSERT)
    private Date gmtCreate;

    /**
     * 更新时间
     */
    @JsonIgnore
    @TableField(value = "gmt_modified", fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;

    public interface Update {
    }

    public interface Save {
    }
}


